package mb.admin.webbean;

import java.util.ArrayList;

import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import mb.admin.dao.CourierDAO;
import mb.admin.data.CourierData;

/**
 * Manager obsługujący widok 'courier.jsp' (backing bean)
 * 
 * @author Michał Budziło
 * 
 */
public class CourierManager {

	private CourierDAO dao;
	private ArrayList<CourierData> dataList;
	private CourierData editedData;

	private ArrayList<SelectItem> idOddzialuList;
	private ArrayList<SelectItem> statusList;
	private ArrayList<SelectItem> uzytkownicyList;

	/**
	 * Konstruktor, ustawia parametry początkowe
	 */
	public CourierManager() {
		dataList = new ArrayList<CourierData>();
		dao = new CourierDAO();
		dataList = dao.getCourierList();
		idOddzialuList = new ArrayList<SelectItem>();
		statusList = new ArrayList<SelectItem>();
		uzytkownicyList = new ArrayList<SelectItem>();
	}

	/**
	 * Metoda przygotowuje dane przed edycją kuriera
	 */
	public void prepareEditData() {
		statusList = new ArrayList<SelectItem>();
		statusList.add(new SelectItem("urlop", "urlop"));
		statusList.add(new SelectItem("aktywny", "aktywny"));
		statusList.add(new SelectItem("zwolniony", "zwolniony"));

		idOddzialuList = dao.getIdOddzialuList();

	}

	/**
	 * Metoda przygotowuje dane przez dodaniem kuriera
	 */
	public void prepareAddData() {
		statusList = new ArrayList<SelectItem>();
		statusList.add(new SelectItem("urlop", "urlop"));
		statusList.add(new SelectItem("aktywny", "aktywny"));
		statusList.add(new SelectItem("zwolniony", "zwolniony"));

		uzytkownicyList = dao.getUzytkownicyList();
		idOddzialuList = dao.getIdOddzialuList();
		editedData = new CourierData();

	}

	/**
	 * Metoda edytuje w bazie danych wybranego kuriera
	 * 
	 * @param e
	 *            ActionEvent - akcja
	 */
	public void editData(ActionEvent e) {
		this.dao.updateData(editedData);
	}

	/**
	 * Metoda usuwa z bazy danych wybranego kuriera
	 * 
	 * @param e
	 *            ActionEvent - akcja
	 */
	public void deleteData(ActionEvent e) {
		this.dao.deleteData(editedData);
		refreshData();
	}

	/**
	 * Metoda dodane do bazy danych nowego kuriera
	 * 
	 * @param e
	 *            ActionEvent akcja
	 */
	public void addData(ActionEvent e) {
		this.dao.insertData(editedData);

		refreshData();
	}

	/**
	 * Metoda pobiera z bazy danych listę kurierów
	 */
	public void refreshData() {
		dataList = dao.getCourierList();
	}

	/**
	 * @return the dataList
	 */
	public ArrayList<CourierData> getDataList() {
		return dataList;
	}

	/**
	 * @param dataList
	 *            the dataList to set
	 */
	public void setDataList(ArrayList<CourierData> dataList) {
		this.dataList = dataList;
	}

	/**
	 * @return the editedData
	 */
	public CourierData getEditedData() {
		return editedData;
	}

	/**
	 * @param editedData
	 *            the editedData to set
	 */
	public void setEditedData(CourierData editedData) {
		this.editedData = editedData;
	}

	/**
	 * @return the idOddzialuList
	 */
	public ArrayList<SelectItem> getIdOddzialuList() {
		return idOddzialuList;
	}

	/**
	 * @param idOddzialuList
	 *            the idOddzialuList to set
	 */
	public void setIdOddzialuList(ArrayList<SelectItem> idOddzialuList) {
		this.idOddzialuList = idOddzialuList;
	}

	/**
	 * @return the statusList
	 */
	public ArrayList<SelectItem> getStatusList() {
		return statusList;
	}

	/**
	 * @param statusList
	 *            the statusList to set
	 */
	public void setStatusList(ArrayList<SelectItem> statusList) {
		this.statusList = statusList;
	}

	/**
	 * @return the uzytkownicyList
	 */
	public ArrayList<SelectItem> getUzytkownicyList() {
		return uzytkownicyList;
	}

	/**
	 * @param uzytkownicyList
	 *            the uzytkownicyList to set
	 */
	public void setUzytkownicyList(ArrayList<SelectItem> uzytkownicyList) {
		this.uzytkownicyList = uzytkownicyList;
	}

}
